package com.soul.dubbo.api.db;

import com.soul.model.db.UserInfo;
import com.soul.model.vo.PageResult;
import com.soul.model.vo.UserInfoVo;

import java.util.List;
import java.util.Map;

/**
 * @author mdoya
 * @version 1.0
 * @description:
 */
public interface UserInfoApi {
    /**
     *  首次登录---完善资料
     * @param userInfo
     */
    void add(UserInfo userInfo);

    /**
     *  更新用户信息
     * @param userInfo
     */
    void updateUserId(UserInfo userInfo);

    /**
     *  根据id查询用户
     * @param userID id 可能是默认id
     * @return
     */
    UserInfoVo findIdUser(Long userID);

    /**
     *  查询黑名单用户
     * @param blackListIds 集合黑名单用户id
     * @return
     */
    List<UserInfo> findByIdsUserInfoList(List<Long> blackListIds);

    /**
     *  根据推荐用户id查询今日佳人用户
     * @param userId 被推荐人用户id
     * @return
     */
    UserInfo findByUserIdUser(Long userId);

    /**
     * @param ids 佳人用户ids
     * @return
     */
    Map<Long, UserInfo> findIdsUserInfoList(List<Long> ids);

    /**
     *  根据ids查询用户信息
     * @param userIdsList ids集合
     * @return
     */
    Map<Long, UserInfo> findByIds(List<Long> userIdsList);

    /**
     *  查询ids集合并且有条件查询
     * @param friendIdsList ids集合
     * @param userInfoCondition 关键字
     * @return map
     */
    Map<Long, UserInfo> findByIdsAndCondition(List<Long> friendIdsList, UserInfo userInfoCondition);

    /**
     * 分页查询
     * @param page
     * @param pageSize
     * @return
     */
    PageResult findPage(Long page, Long pageSize);

    /**
     *  条件查询用户ids
     * @param userInfo
     * @return
     */
    List<UserInfo> findNicknameUser(UserInfo userInfo,Long page,Long pagesize);

    /**
     *  查询用户总条数
     * @return
     */
    Integer findUserCounts();

    /**
     *  查询所有用户
     * @return
     */
    List<UserInfo> findUserInfoAll();

    /**
     * 查询指定用户发布的视频列表
     *
     * @param page
     * @param pagesize
     * @param uid
     * @return
     */
//    PageResult findByUserId(Long page, Long pagesize, Long uid);
}
